En Costa Rica existen cuatro especies de primates:
- araña o colorado (Ateles geoffroyi)
- carablanca (Cebus capucinus)
- congo o aullador (Alouatta palliata)
- ardilla o tití (Saimiri oerstedii).
En este trabajo se pretende crear una tabla interactiva de los registros de presencia de cada especie utlizando la función datatable() del paquete DT. Asismismo, un gráfico pastel que muestre el porcentaje para cada especie con el paquete plotly. Finalmente, se mapea la districión de especies con el paquete leaflet.
Se cargan los paquetes, se crean las data.frame y se asigna el sistema de coordenadas (CRS).
# Carga de paquetes
library(dplyr)
library(sf)
library(DT)
library(plotly)
library(leaflet)
library(rgdal)
library(raster)
# Registros de presencia de primates
primates <-
st_read(
"https://raw.githubusercontent.com/gf0604-procesamientodatosgeograficos/2021i-datos/main/gbif/primates-cr-registros.csv",
options = c(
"X_POSSIBLE_NAMES=decimalLongitude",
"Y_POSSIBLE_NAMES=decimalLatitude"
),
quiet = TRUE
)
# Asignación de CRS
st_crs(primates) = 4326
# Creación de capa geoespacial de cantones
cantones <-
st_read(
"https://raw.githubusercontent.com/gf0604-procesamientodatosgeograficos/2021i-datos/main/ign/delimitacion-territorial-administrativa/cr_cantones_simp_wgs84.geojson",
quiet = TRUE
)
st_join()# Cruce espacial con la tabla de cantones, para obtener el nombre del cantón
primates <-
primates %>%
st_join(cantones["canton"])
# Tabla de registros de presencia
primates %>%
st_drop_geometry() %>%
dplyr::select(species, family, stateProvince, canton, eventDate) %>%
datatable(
colnames = c("Especie", "Familia", "Provincia", "Cantón", "Fecha"),
options = list(searchHighlight = TRUE,
language = list(url = '//cdn.datatables.net/plug-ins/1.10.25/i18n/Spanish.json'),
pageLength = 10)
)
# Creación de paleta de colores
pal <- c("#ff3399", "#993399", "#ffcc00")
# Gráfico pastel de los registros de primates en Costa Rica
plot_ly(primates, labels = ~ species, type = "pie",
textposition = 'inside',
marker = list (colors = pal),
textinfo = 'label+percent',
hover = ~ 'Cantidad de registros',
hoverinfo = "value",
showlegend = FALSE) %>%
layout(title = "Porcentaje de registros de primates en Costa Rica")%>%
config(locale = "es")
# Con filter() se filtran las especies de primates
araña <- primates %>%
filter(species == "Ateles geoffroyi")
carablanca <- primates %>%
filter(species == "Cebus capucinus")
congo <- primates %>%
filter (species == "Alouatta palliata")
ardilla <- primates %>%
filter (species == "Saimiri oerstedii")
# Capa de provincias
provincias <-
st_read(
"https://raw.githubusercontent.com/gf0604-procesamientodatosgeograficos/2021i-datos/main/ign/delimitacion-territorial-administrativa/cr_provincias_simp_wgs84.geojson",
quiet = TRUE
)
# Obtención de datos de la base de datos World Cilm
alt <- getData(
"worldclim",
var = "alt",
res = .5,
lon = -84,
lat = 10
)
# Corte de la capa con la capa de provincias
altitud <-
alt %>%
crop(provincias) %>%
mask(provincias)
# Creación de paleta de colores
pal2 <- colorNumeric(
c("#006400", "#FFFF00", "#3F2817"),
values(altitud),
na.color = "transparent"
)
# Mapa de registros de presencia
primates %>%
dplyr::select(species,
family,
stateProvince,
canton,
eventDate,
decimalLongitude,
decimalLatitude) %>%
leaflet() %>%
addProviderTiles(providers$OpenStreetMap.Mapnik, group = "OpenStreetMap") %>%
addProviderTiles(providers$Stamen.TonerLite, group = "Stamen Toner Lite") %>%
addProviderTiles(providers$Esri.WorldImagery, group = "Imágenes de ESRI") %>%
addCircleMarkers(
data = araña,
stroke = F,
radius = 4,
fillColor = '#ff3399',
fillOpacity = 1,
popup = paste(
primates$species,
primates$family,
primates$stateProvince,
primates$canton,
primates$eventDate,
primates$decimalLongitude,
primates$decimalLatitude,
sep = '<br/>'
),
group = "Mono araña"
) %>%
addCircleMarkers(
data = carablanca,
stroke = F,
radius = 4,
fillColor = '#993399',
fillOpacity = 1,
popup = paste(
primates$species,
primates$family,
primates$stateProvince,
primates$canton,
primates$eventDate,
primates$decimalLongitude,
primates$decimalLatitude,
sep = '<br/>'
),
group = "Mono carablanca"
) %>%
addCircleMarkers(
data = congo,
stroke = F,
radius = 4,
fillColor = '#ffcc00',
fillOpacity = 1,
popup = paste(
primates$species,
primates$family,
primates$stateProvince,
primates$canton,
primates$eventDate,
primates$decimalLongitude,
primates$decimalLatitude,
sep = '<br/>'
),
group = "Mono congo"
) %>%
addCircleMarkers(
data = ardilla,
stroke = F,
radius = 4,
fillColor = '#006699',
fillOpacity = 1,
popup = paste(
primates$species,
primates$family,
primates$stateProvince,
primates$canton,
primates$decimalLongitude,
primates$decimalLatitude,
sep = '<br/>'
),
group = "Mono ardilla"
) %>%
addRasterImage(altitud,
colors = pal2,
opacity = 0.7,
group = "Altitud"
) %>%
addLayersControl(
baseGroups = c("OpenStreetMap", "Stamen Toner Lite", "Imágenes de ESRI"),
overlayGroups = c("Altitud", "Mono araña", "Mono carablanca", "Mono congo", "Mono ardilla")
) %>%
addMiniMap(
tiles = providers$Stamen.OpenStreetMap.Mapnik,
position = "bottomleft",
toggleDisplay = TRUE
)